博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序上传图片
阅读量:4591 次
发布时间:2019-06-09

本文共 4326 字,大约阅读时间需要 14 分钟。

1.因为小程序的api描述都比较简单,并没有wxml及wxss的描述,要想实现小程序demo上的上传图片样式首先需要下载weui.wxss并引入到项目中

小程序版weui下载地址:https://github.com/Tencent/weui-wxss

可以将整个文件下载下来,将其中的dist文件夹导入到独立的小程序中作为参考

把weui.wxss放到自己的项目中后,在app.wxss中import weui.wxss 作为全局样式

/**app.wxss**/@import "weui.wxss";  

照着domo把wxml相关内容复制进自己的文件中

图片上传
{ {images.length}}/9

 根据demo修改相关js:

 首先实现选择图片功能

Page({  /**   * 页面的初始数据   */  data: {    images: [],//临时图片地址  },  chooseImage: function () {    var that = this;    wx.chooseImage({      count: 9, // 默认9      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success: function (res) {        console.log(res);        var tempFilePaths = res.tempFilePaths        that.setData({          images: that.data.images.concat(tempFilePaths)        })         }    })  },  previewImage: function (e) {    wx.previewImage({      current: e.currentTarget.id, // 当前显示图片的http链接      urls: this.data.images // 需要预览的图片http链接列表    })  } })

 在此基础上进行上传图片,上传文件官方方法如下:

wx.uploadFile({      url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址      filePath: tempFilePaths[0],      name: 'file',      formData:{        'user': 'test'      },      success: function(res){        var data = res.data        //do something      }

 发现了尴尬的问题,发现上传图片一次只能传一张

参考了https://www.cnblogs.com/xjwy/p/6956120.html的递归方法,进行多张图片的上传

方法如下:

function uploadimg(data) {  var that=this;  var i = data.i ? data.i : 0,//要上传的图片    success = data.success ? data.success : 0,//上传成功的个数    fail = data.fail ? data.fail : 0;//上传失败的个数  wx.uploadFile({    url: data.url, //开发者服务器 url    filePath: data.path[i],    name: 'file',    formData: {      'user': 'test'    },    success: function (res) {      success++;      //do something    },    fail: function () {      fail++;    },    complete: function () {      i++;      if (i == data.path.length) {        console.log("success:" + success + "fail" + fail);      }else{        data.i = i;        data.success = success;        data.fail = fail;        uploadimg(data);      }    }  })} 

点击上传按钮后调用该方法,进行图片上传

uploadImg: function (e) {    var that = this;    if (that.data.images.length > 0) {      uploadimg({//调用图片上传uploadimg方法        url:  that.data.upImgUrl,//这里是你图片上传的接口        path: that.data.images//这里是选取的图片的地址数组      });    } else {        console.log("没有可上传的文件");    }  }

  全部js代码如下

function uploadimg(data) {  var that=this;  var i = data.i ? data.i : 0,//要上传的图片    success = data.success ? data.success : 0,//上传成功的个数    fail = data.fail ? data.fail : 0;//上传失败的个数  wx.uploadFile({    url: data.url, //开发者服务器 url    filePath: data.path[i],    name: 'file',    formData: {      'user': 'test'    },    success: function (res) {      success++;      //do something    },    fail: function () {      fail++;    },    complete: function () {      i++;      if (i == data.path.length) {        console.log("success:" + success + "fail" + fail);      }else{        data.i = i;        data.success = success;        data.fail = fail;        uploadimg(data);      }    }  })}Page({  /**   * 页面的初始数据   */  data: {    images: [],//临时图片地址    upImgUrl: 'https://........'//上传图片服务器地址  },   chooseImage: function () {    var that = this;    wx.chooseImage({      count: 9, // 默认9      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success: function (res) {        console.log(res);        var tempFilePaths = res.tempFilePaths        that.setData({          images: that.data.images.concat(tempFilePaths)        })      }    })  },  previewImage: function (e) {    wx.previewImage({      current: e.currentTarget.id, // 当前显示图片的http链接      urls: this.data.images // 需要预览的图片http链接列表    })  },  uploadImg: function (e) {    var that = this;    if (that.data.images.length > 0) {      uploadimg({        url:  that.data.upImgUrl,//这里是你图片上传的接口        path: that.data.images//这里是选取的图片的地址数组      });    } else {        console.log("没有可上传的文件");    }  }})

 小程序还在摸索阶段没实际开发测试过,暂时先记录下

转载于:https://www.cnblogs.com/Anne3/p/8884270.html

你可能感兴趣的文章
Linq to Entity 时间差作为筛选条件产生的问题
查看>>
JS常用类型事件
查看>>
Python:笔记(2)——函数与模块
查看>>
正则表达式
查看>>
raise指令触发异常实例
查看>>
sphinx的安装配置和中文分词包coreseek
查看>>
HashMap Hashtable区别
查看>>
Oracle 11i与12R在功能上有什么区别
查看>>
Hero In Maze(BFS广搜)
查看>>
操作列表
查看>>
iOS开发之Runtime使用
查看>>
导入maven项目时出现 Version of Spring Facet could not be detected. 解决方法
查看>>
nginx https ssl 设置受信任证书[原创]
查看>>
第二个项目:WC
查看>>
PowerMock注解PowerMockIgnore的使用方法
查看>>
ASP基础之内置类型及注意点
查看>>
设计模式10-装饰模式
查看>>
Beta冲刺Day4
查看>>
Android中intent启动Activity中intent.setFlags()的作用
查看>>
配置spring事务管理的几种方式(声明式事务)
查看>>